export default () => {
  let sucess = ctx => {
    return (json, msg) => {
      ctx.set('Content-Type', 'application/json')
      ctx.body = JSON.stringify({
        code: 0,
        data: json || {},
        msg: msg || 'success'
      })
    }
  }
  let fail = ctx => {
    return msg => {
      ctx.set('Content-Type', 'application/json')
      if (typeof msg === 'object') {
        const status = msg.statusCode || msg.status || 500
        ctx.body = {
          code: status,
          data: {},
          msg: status === 401 ? '鉴权失败，请检查token' : msg.message
        }
      } else {
        ctx.body = JSON.stringify({
          code: 1,
          data: {},
          msg: msg
        })
      }
    }
  }
  return async (ctx, next) => {
    ctx.resResult = sucess(ctx)
    ctx.resResultError = fail(ctx)
    try {
      await next()
    } catch (err) {
      ctx.resResultError(err)
    }
  }
}
